package com.vviton.zyhj.admin.service.impl;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;

import com.vviton.zyhj.admin.content.CommonConstants;
import com.vviton.zyhj.admin.cors.JfglPtCors;
import com.vviton.zyhj.admin.service.QzzfglService;
import com.vviton.zyhj.admin.view.ParamJfsz;
import com.vviton.zyhj.admin.view.ParamJfye;
import com.vviton.zyhj.common.base.BaseService;
import com.vviton.zyhj.common.common.CodeConstants;
import com.vviton.zyhj.common.dao.TYyxtDdglDhjlbMapper;
import com.vviton.zyhj.common.dao.TYyxtTjQzjftjMapper;
import com.vviton.zyhj.common.entity.TYyxtCode;
import com.vviton.zyhj.common.entity.TYyxtDdglDhjlb;
import com.vviton.zyhj.common.entity.TYyxtTjQzjftj;
import com.vviton.zyhj.common.utils.page.Page;
import com.vviton.zyhj.common.view.ParamQzzfglDdmx;
import com.vviton.zyhj.common.view.ParamQzzfglRhz;
import com.vviton.zyhj.common.view.ViewDhjlb;

/**
 * ClassName:QzzfglServiceImpl <br/>
 * Function: 全站账房管理ServiceImpl. <br/>
 * Date: 2016年11月18日 上午9:53:19 <br/>
 *
 * @author nifang
 * @version 1.0
 * @since JDK 1.7
 */
public class QzzfglServiceImpl extends BaseService implements QzzfglService {

	/** 日志 */
	private static Logger logger = Logger.getLogger(QzzfglServiceImpl.class);

	/** 全站积分统计Mapper */
	@Autowired
	private TYyxtTjQzjftjMapper tYyxtTjQzjftjMapper;

	/** 兑换记录表Mapper */
	@Autowired
	private TYyxtDdglDhjlbMapper tYyxtDdglDhjlbMapper;

	/** 积分管理-平台跨域 */
	@Autowired
	private JfglPtCors jfglPtCors;

	/**
	 *
	 * getQzzfglRhzPagination,(全站账房管理日汇总分页查询). <br/>
	 * Author: nifang <br/>
	 * Create Date: 2016年11月18日 <br/>
	 * ===============================================================<br/>
	 * Modifier: nifang <br/>
	 * Modify Date: 2016年11月18日 <br/>
	 * Modify Description: <br/>
	 * ===============================================================<br/>
	 *
	 * @param param
	 *            参数
	 * @return 日汇总数据
	 * @since JDK 1.7
	 */
	@Override
	public Page getQzzfglRhzPagination(ParamQzzfglRhz param) {

		logger.info("全站账房管理日汇总分页查询begin");

		Page page = new Page();
		page.setCurrPage(param.getCurrPage());
		page.setPageSize(param.getPageSize());
		page.setParam(param);

		int count = tYyxtTjQzjftjMapper.countQzzfglRhzPagination(page);
		page.setTotal(count);

		List<TYyxtTjQzjftj> qzjftjList = new ArrayList<TYyxtTjQzjftj>();
		if (count > 0) {
			qzjftjList = tYyxtTjQzjftjMapper.getQzzfglRhzPagination(page);
			page.setData(qzjftjList);
		}

		logger.info("全站账房管理日汇总分页查询end");
		return page;
	}

	/**
	 *
	 * getQzzfglDdmxPagination,(全站账房管理订单明细分页查询). <br/>
	 * Author: nifang <br/>
	 * Create Date: 2016年11月18日 <br/>
	 * ===============================================================<br/>
	 * Modifier: nifang <br/>
	 * Modify Date: 2016年11月18日 <br/>
	 * Modify Description: <br/>
	 * ===============================================================<br/>
	 *
	 * @param param
	 *            参数
	 * @return 订单明细
	 * @since JDK 1.7
	 */
	@Override
	public Page getQzzfglDdmxPagination(ParamQzzfglDdmx param) {

		logger.info("全站账房管理订单明细分页查询begin");

		Page page = new Page();
		page.setCurrPage(param.getCurrPage());
		page.setPageSize(param.getPageSize());
		page.setParam(param);

		int count = tYyxtDdglDhjlbMapper.countQzzfglDdmxPagination(page);
		page.setTotal(count);

		List<ViewDhjlb> viewDhjlbList = new ArrayList<ViewDhjlb>();
		Map<String, TYyxtCode> dhztMap = this
				.getCodeMapCodeclass(CodeConstants.DHZT);
		Map<String, TYyxtCode> dhlbMap = this
				.getCodeMapCodeclass(CodeConstants.DHLB);
		if (count > 0) {
			List<TYyxtDdglDhjlb> dhjlbList = tYyxtDdglDhjlbMapper
					.getQzzfglDdmxPagination(page);
			for (TYyxtDdglDhjlb dhjlb : dhjlbList) {
				ViewDhjlb viewDhjlb = new ViewDhjlb();
				CommonConstants.copyProperties(viewDhjlb, dhjlb);
				// 兑换状态描述
				String dhztmc = dhztMap.get(CodeConstants.DHZT + dhjlb.getZt())
						.getCodedesc();
				// 兑换类别描述
				String dhlbmc = dhlbMap.get(
						CodeConstants.DHLB + dhjlb.getDhlb()).getCodedesc();
				viewDhjlb.setDhztDesc(dhztmc);
				viewDhjlb.setDhlbDesc(dhlbmc);
				viewDhjlbList.add(viewDhjlb);
			}

			page.setData(viewDhjlbList);
			;
		}

		logger.info("全站账房管理订单明细分页查询end");
		return page;
	}

	/**
	 * getJfyePagination,全站账房管理获取积分余额(分页). <br/>
	 * Author: yaojie <br/>
	 * Create Date: 2016年4月15日 <br/>
	 * ===============================================================<br/>
	 * Modifier: LiuCheng <br/>
	 * Modify Date: 2016年12月5日 <br/>
	 * Modify Description: <br/>
	 * ===============================================================<br/>
	 *
	 * @param paramJfye
	 *            积分余额参数实体
	 * @return 分页实体
	 * @since JDK 1.7
	 */
	@Override
	public Page getJfyePagination(ParamJfye paramJfye, String lang) {

		return jfglPtCors.getJfyePagination(paramJfye, lang);
	}

	/**
	 * getJftjarPagination,获取积分收支信息(按日-分页). <br/>
	 * Author: yaojie <br/>
	 * Create Date: 2016年4月14日 <br/>
	 * ===============================================================<br/>
	 * Modifier: LiuCheng <br/>
	 * Modify Date: 2016年12月5日 <br/>
	 * Modify Description: <br/>
	 * ===============================================================<br/>
	 *
	 * @param paramJfsz
	 *            积分收支参数实体
	 * @return 分页实体
	 * @since JDK 1.7
	 */
	@Override
	public Page getJftjarPagination(ParamJfsz paramJfsz, String lang) {
		logger.info("查询积分收支列表(按日)---开始");
		return jfglPtCors.getQzjftjRhzPagination(paramJfsz, lang);

	}

	/**
	 * getJftjaraxwPagination,获取积分收支信息(按行为-分页). <br/>
	 * Author: yaojie <br/>
	 * Create Date: 2016年4月14日 <br/>
	 * ===============================================================<br/>
	 * Modifier: LiuCheng <br/>
	 * Modify Date: 2016年12月5日 <br/>
	 * Modify Description: <br/>
	 * ===============================================================<br/>
	 *
	 * @param paramJfsz
	 *            积分收支参数实体
	 * @param lang
	 *            语言
	 * @return 分页实体
	 * @since JDK 1.7
	 */
	@Override
	public Page getJftjaraxwPagination(ParamJfsz paramJfsz, String lang) {
		logger.info("查询积分收支列表(按行为)---开始");
		return jfglPtCors.getJftjaraxwPagination(paramJfsz, lang);

	}

	/**
	 * getJfhqmxPagination,获取积分明细(分页). <br/>
	 * Author: yaojie <br/>
	 * Create Date: 2016年4月15日 <br/>
	 * ===============================================================<br/>
	 * Modifier: yaojie <br/>
	 * Modify Date: 2016年4月15日 <br/>
	 * Modify Description: <br/>
	 * ===============================================================<br/>
	 *
	 * @param paramJfsz
	 *            积分收支参数实体
	 * @return 积分获取明细Page
	 * @since JDK 1.7
	 */
	@Override
	public Page getJfhqmxPagination(ParamJfsz paramJfsz, String lang) {
		paramJfsz.setZhlx(CommonConstants.ZHLX_PT);
		return jfglPtCors.getJfhqmxPagination(paramJfsz, lang);
	}

	/**
	 * getJfzcmxPagination,支出积分明细(分页). <br/>
	 * Author: yaojie <br/>
	 * Create Date: 2016年4月15日 <br/>
	 * ===============================================================<br/>
	 * Modifier: LiuCheng <br/>
	 * Modify Date: 2016年12月5日 <br/>
	 * Modify Description: <br/>
	 * ===============================================================<br/>
	 *
	 * @param paramJfsz
	 *            积分收支参数实体
	 * @return 全站积分(获取/支出)明细Page
	 * @since JDK 1.7
	 */
	@Override
	public Page getJfzcmxPagination(ParamJfsz paramJfsz, String lang) {
		paramJfsz.setZhlx(CommonConstants.ZHLX_PT);
		return jfglPtCors.getJfzcmxPagination(paramJfsz, lang);
	}
}
